function EventoUserProfile(simulador) {
	this.simulador = simulador;
	this.user = null;
	this.title_html = '';
	this.title = '';
	return this;
}
EventoUserProfile.prototype = {
	run: function() {
		// Realiza amostragem.
		this.simulador.add_sample();

		// Agenda próxima amostragem.
		//this.simulador.add_evento(this.simulador.settings.dt_amostragem, new EventoUserProfile(this.simulador));

		return false;
	}
}


function EventoUserSaida(simulador) {
	this.simulador = simulador;
	this.user = null;
	this.title_html = '<span class="badge badge-info">Término de Serviço</span>';
	this.title = 'Término de Serviço';
	return this;
}
EventoUserSaida.prototype = {
	run: function() {
		if (this.simulador.users_ativos.length > 0) { 
			this.user = this.simulador.users_ativos.pop();
			if (!this.user.ativo) {
				//console.log("Opz! user já saiu e não pode sair.");
				return false;
			}
			this.user.saida = this.simulador.tempo_atual;

			// Move para a lista dos users inativos.
			this.simulador.users_inativos.push(this.user);

			// Desativa user.
			this.user.ativo = false;
			del_pessoa_na_fila(this.user.nome);
		}
		var dt = expovariate(this.simulador.settings.mu);
		this.simulador.add_evento(dt, new EventoUserSaida(this.simulador));

		return true;
	}
}

// --------------------

var nr_chegada_externa = 0;

function EventoUserChegada(simulador) {
	this.simulador = simulador;
	this.title_html = '<span class="badge">Chegada</span>';
	this.title = 'Chegada';
	return this;
}
EventoUserChegada.nr_chegadas = 0;
EventoUserChegada.prototype = {
	run: function() {
		// Instancia novo user e adiciona ao simulador.
		EventoUserChegada.nr_chegadas++;
		var nome = EventoUserChegada.nr_chegadas;
		this.simulador.add_user(nome);

		// Agenda próximo evento de chegada de user.
		var dt = expovariate(this.simulador.settings.lambda);
		this.simulador.add_evento(dt, new EventoUserChegada(this.simulador));
		return true;
	}
}

